package com.liuyz;

import java.util.LinkedHashSet;
import java.util.Set;

@SuppressWarnings({"all"})
public class LinkedHashSet_ {

    public static void main(String[] args) {
        // 添加元素/添加重复元素
        Set set = new LinkedHashSet(); // step1
        set.add("test"); // step2
        set.add(233); // step3
        set.add(233); // step4
        set.add("test1"); // step5
        set.add("test2"); // step6
        System.out.println(set);

        // 扩容机制
        Set set2 = new LinkedHashSet(); // step1
        for (int i = 1; i <= 50; i++) { // step2
            set2.add(i);
        }

        // 定义hashCode完全相同的对象
        class A {
            private int i;

            public A(int i) {
                this.i = i;
            }

            @Override
            public int hashCode() {
                return 233;
            }
        }

        for (int i = 1; i <= 8; i++) { // step3：让某个节点数组达到8个元素
            set2.add(new A(i));
        }

        for (int i = 1; i <= 8; i++) { // step4：让当前那个节点进行树化
            set2.add(new A(i));
        }
        System.out.println(set2);
    }
}
